e6467d01ce5ba49eb4495372b70270d5cec008c4,project-set/components/datastore/src/main/java/com/rackspace/papi/components/datastore/hash/AbstractHashRingDatastore.java,AbstractHashRingDatastore,put,#String#number[]#number[]#number#TimeUnit#,90

Before Change


   protected void put(String name, byte[] id, byte[] value, int ttl, TimeUnit timeUnit) throws DatastoreOperationException {
      InetSocketAddress target;

      while (!(target = getTarget(id)).equals(clusterView.localMember())) {
         LOG.debug(clusterView.localMember().toString() + ":: Routing datastore get request for, \"" + name + "\" to: " + target.toString());

         try {
            remoteCache.put(name, value, ttl, timeUnit, target);

After Change


   protected void put(String name, byte[] id, byte[] value, int ttl, TimeUnit timeUnit) throws DatastoreOperationException {
      boolean retry;

      do {
         retry = false;

         final InetSocketAddress target = getTarget(id);

         if (target != null && !target.equals(clusterView.localMember())) {
            LOG.debug(clusterView.localMember() + ":: Routing datastore put request for, \"" + name + "\" to: " + target.toString());

            try {
               remoteCache.put(name, value, ttl, timeUnit, target);
               return;
            } catch (RemoteConnectionException rce) {
               clusterMemberDamaged(target, clusterView, rce);
               retry = true;
            }
         }
      } while (retry);

      localDatastore.put(name, value, ttl, timeUnit);
   }